package com.cory.module.oplog.core.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.cory.module.oplog.core.handler.BuiltinTypeHandler;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OpLogAttr {
    
    String name();   // 属性名称
    
    String alias() default "";  // 属性别名，默认类的属性名

    BuiltinTypeHandler builtinType() default BuiltinTypeHandler.NORMAL; // 属性处理方式

    String extendedType() default "";  // 额外处理的类型，可自定义类，实现BaseExtendedTypeHandler接口处理
    
    String foreignTable() default ""; // 当builtinType=“FOREIGN”有效，查询其他表对应值的表名
    
    String foreignTableKey() default "id"; // 当builtinType=“FOREIGN”有效，查询其他表对应值的外键列
    
    String foreignTableData() default "name"; // 当builtinType=“FOREIGN”有效，查询其他表对应值的数据列
    
    String dictCode() default ""; // 当builtinType=“DICT”有效，字典类型
}
